iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
AI & Data

AI白話文運動系列之「A!給我那張Image!」系列 第 18

CNN經典論文導讀(三)--ResNet中的Residual結構

  • 分享至 

  • xImage
  •  

前言

自從1998年LeNet-5的問世,以及2012年異軍突起在ImageNet比賽上展露頭角的AlexNet之後,VGG架構的出現讓CNN的設計進入一個新的紀元,幾乎所有的架構都設計得越深越複雜,希望可以獲得更好的模型表現,不過這樣也會帶來一些問題,我們今天會從這個角度出發,順便看看有沒有甚麼解決方法。

先備知識

  1. 國中數學(至少需要有一些函數的概念)

看完今天的內容你可能會知道......

  1. 機器學習跟深度學習的差別是甚麼
  2. 深度學習模型的困境
  3. ResNet提出了甚麼特殊結構

一、更深更廣的CNN

1. 機器學習 vs. 深度學習

  • 機器學習(Machine Learning, ML)和深度學習(Deep Learning, DL)是兩種很容易混淆的概念,兩者都是為了達成「人工智慧(Artificial Intelligence, AI)」的方式,目的在於讓機器可以模仿人類的行為/能力/思考方式等等。
  • 機器學習指的是一種讓電腦從大量的資料中學習,進而模仿人類的方式,不具體作法不限,而深度學習其實是機器學習的一個分支,作法是有限制的,必須從輸入到輸出的所有判斷都交由電腦來處理,就像下圖所示:
    https://ithelp.ithome.com.tw/upload/images/20231003/201632990NaG1LrAkC.png
  • 傳統上的機器學習會分成好幾個部分,通常會有特徵提取與特徵判斷/整合兩個部分,前者是為了從大量的數據中找到用來處理目標任務的關鍵資訊,後者是將這些關鍵資訊整合進目標任務中,以上圖為例,通過特徵提取出來的資訊還需要經過「分類」這個步驟,目的在於判斷每個類別會對應到哪些資訊。

2. 更深更廣,更棒更好?

  • 能夠分辨機器學習與深度學習的差異之後,或許就會發現,我們一直以來在介紹的CNN模型就是一種深度學習模型,尤其在昨天介紹VGG Pytorch實戰時,我甚至直接將VGG架構的程式碼拆分成「特徵提取器」與「分類器」兩個部分。
  • 在深度學習誕生以來,許多研究發現「更深更廣」的模型架構可以有更好的模型表現,更深指的是模型的層數要多,而更廣指的是模型中的每一層要使用更多東西來處理資訊,以CNN的角度來說就是每一層的捲積核數量要多。
  • 理論上是這樣說,但是實際上,我們可以結合之前的內容(https://ithelp.ithome.com.tw/articles/10330557)稍微想一下,如果一個很深很複雜的模型沒有搭配的剛剛好的訓練策略的話,是不是很容易面臨梯度消失的問題?畢竟再多的資訊遇到夠深的架構最後也會被稀釋掉。
  • 這個問題也就是我們今天要介紹了架構ResNet在討論的主要問題,接著就讓我們好好的研究一下ResNet提出了什麼樣的猜想,以及如何解決這樣的問題吧!

二、殘值訊號增強--ResNet

  • 論文:https://arxiv.org/pdf/1512.03385.pdf
  • ResNet在2015年被提出,並且在ImageNet比賽上展獲多項冠軍,是非常強勢的架構。在論文的一開始,作者先提出了一個問題:既然模型越深性能越好,那麼不斷加深的話會發生甚麼事?所以作者做了一個小實驗,比較了相同架構下20層模型與56層模型的表現:
    https://ithelp.ithome.com.tw/upload/images/20231003/2016329995OiOrDBYS.png
  • 可以看出來,不論是在訓練階段還是在模型評估階段,都是20層的模型佔上風,這是為甚麼呢?作者把這樣的現象稱為「退化(Degradation)」。看到這裡或許有人會想問說,有沒有可能是過擬合呢?回顧一下先前的內容(https://ithelp.ithome.com.tw/articles/10329492)就會發現,退化不是因為過擬合引起的,因為過擬合會導致訓練階段的表現越來越好,可是在評估階段表現不佳,這跟上圖的現象不一樣。
  • 第一個原因是因為隨著模型越來越深,傳遞的梯度越來越少,導致模型沒辦法有效的更新,換句話說就是因為傳遞的誤差資訊不夠多,限制了模型本身的表現。
  • 第二個原因是受到模型架構本身的限制,雖然我們在介紹AI模型的更新時都是使用梯度下降,但這其實只是「最佳化方法」中的其中一個。AI模型的每一層都可以被寫成數學函數來表達,而我們希望這個函數(假設為H(x))可以輸出我們最想要看到這答案,這個尋找最佳函數的過程就是一種最佳化。作者的意思是不同的架構很難用同一種最佳化方法處理,所以當我們都使用梯度下降的時候,很難讓所有的架構都得到最佳表現,作者還舉了一個極端情況的例子:把前面那個56層的模型後面36層都只學習恆等式取代(也就是輸入等於輸出),理論上這樣的結構跟20層的是一模一樣的,都是只有前面20層在學習,但是實驗結果,性能上卻是仍不及20層的模型,這是因為要讓模型學習恆等式(H(x)=x)是很困難的,也不好收斂。
  • 那麼,有沒有甚麼方法可以不要讓加入恆等式後反而影響模型性能?又有沒有甚麼方法可以避免這樣的退化現象呢?作者提出了一個非常實用的結構:residual mappinghttps://ithelp.ithome.com.tw/upload/images/20231003/20163299uSc4jPNT2v.png
  • 如果上圖中的F(x)=H(x)-x等於0,也就是殘值(Redidual)時,就會是我們希望的恆等式(H(x)輸出結果等於短路(Shortcut)值x的結果,一來,將較於上面的表示法,這樣的形式從數學的角度來講是比較好進行最佳化的,二來,這種將資訊直接往後傳遞的方式,也可以避免資訊傳播路徑太長而被稀釋掉的問題。更詳細的討論內容可以參考:https://reurl.cc/QZXk10https://reurl.cc/l7Drkv
  • ResNet模型架構就是基於這樣的Residual架構與VGG架構所提出的,與VGG架構的差別可以參見下圖:
    https://ithelp.ithome.com.tw/upload/images/20231003/20163299HXvsEK7IFj.png
  • 最初在論文中提出的ResNet架構主要有以下變形(分別是ResNet-18、ResNet-34、ResNet-50、ResNet-101、ResNet-152):
    https://ithelp.ithome.com.tw/upload/images/20231003/20163299iupvyN4qw8.png

三、總結

  • 這次的論文導讀中我們主要介紹了機器學習與深度學習的差異,還有深度學習的模型越來越深會遇到什麼樣的問題,也因此延伸介紹了ResNet中提出的殘差架構,更詳細的模型架構會留到Pytorch實戰篇再一起介紹,今天的內容比較難消化,可以搭配參考資料多看幾次!

上一篇
CNN經典論文實戰(二)--VGG
下一篇
CNN經典論文實戰(三)--ResNet
系列文
AI白話文運動系列之「A!給我那張Image!」30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言